{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 共享单车数据探索"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 数据读取及基本处理\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "# plotting\n",
    "import seaborn as sn\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "# setting params\n",
    "params = {'legend.fontsize': 'x-large',\n",
    "          'figure.figsize': (30, 10),\n",
    "          'axes.labelsize': 'x-large',\n",
    "          'axes.titlesize':'x-large',\n",
    "          'xtick.labelsize':'x-large',\n",
    "          'ytick.labelsize':'x-large'}\n",
    "\n",
    "sn.set_style('whitegrid')\n",
    "sn.set_context('talk')\n",
    "\n",
    "plt.rcParams.update(params)\n",
    "pd.options.display.max_colwidth = 600\n",
    "\n",
    "# pandas display data frames as tables\n",
    "from IPython.display import display, HTML"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "train : (731, 16)\n"
     ]
    }
   ],
   "source": [
    "#读取数据\n",
    "train = pd.read_csv(\"day.csv\")\n",
    "train.head()\n",
    "print(\"train : \" + str(train.shape))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 731 entries, 0 to 730\n",
      "Data columns (total 16 columns):\n",
      "instant       731 non-null int64\n",
      "dteday        731 non-null object\n",
      "season        731 non-null int64\n",
      "yr            731 non-null int64\n",
      "mnth          731 non-null int64\n",
      "holiday       731 non-null int64\n",
      "weekday       731 non-null int64\n",
      "workingday    731 non-null int64\n",
      "weathersit    731 non-null int64\n",
      "temp          731 non-null float64\n",
      "atemp         731 non-null float64\n",
      "hum           731 non-null float64\n",
      "windspeed     731 non-null float64\n",
      "casual        731 non-null int64\n",
      "registered    731 non-null int64\n",
      "cnt           731 non-null int64\n",
      "dtypes: float64(4), int64(11), object(1)\n",
      "memory usage: 91.5+ KB\n"
     ]
    }
   ],
   "source": [
    "train.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>instant</th>\n",
       "      <th>season</th>\n",
       "      <th>yr</th>\n",
       "      <th>mnth</th>\n",
       "      <th>holiday</th>\n",
       "      <th>weekday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>weathersit</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>casual</th>\n",
       "      <th>registered</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>366.000000</td>\n",
       "      <td>2.496580</td>\n",
       "      <td>0.500684</td>\n",
       "      <td>6.519836</td>\n",
       "      <td>0.028728</td>\n",
       "      <td>2.997264</td>\n",
       "      <td>0.683995</td>\n",
       "      <td>1.395349</td>\n",
       "      <td>0.495385</td>\n",
       "      <td>0.474354</td>\n",
       "      <td>0.627894</td>\n",
       "      <td>0.190486</td>\n",
       "      <td>848.176471</td>\n",
       "      <td>3656.172367</td>\n",
       "      <td>4504.348837</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>211.165812</td>\n",
       "      <td>1.110807</td>\n",
       "      <td>0.500342</td>\n",
       "      <td>3.451913</td>\n",
       "      <td>0.167155</td>\n",
       "      <td>2.004787</td>\n",
       "      <td>0.465233</td>\n",
       "      <td>0.544894</td>\n",
       "      <td>0.183051</td>\n",
       "      <td>0.162961</td>\n",
       "      <td>0.142429</td>\n",
       "      <td>0.077498</td>\n",
       "      <td>686.622488</td>\n",
       "      <td>1560.256377</td>\n",
       "      <td>1937.211452</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.059130</td>\n",
       "      <td>0.079070</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.022392</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>20.000000</td>\n",
       "      <td>22.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>183.500000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.337083</td>\n",
       "      <td>0.337842</td>\n",
       "      <td>0.520000</td>\n",
       "      <td>0.134950</td>\n",
       "      <td>315.500000</td>\n",
       "      <td>2497.000000</td>\n",
       "      <td>3152.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>366.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.498333</td>\n",
       "      <td>0.486733</td>\n",
       "      <td>0.626667</td>\n",
       "      <td>0.180975</td>\n",
       "      <td>713.000000</td>\n",
       "      <td>3662.000000</td>\n",
       "      <td>4548.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>548.500000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>10.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.655417</td>\n",
       "      <td>0.608602</td>\n",
       "      <td>0.730209</td>\n",
       "      <td>0.233214</td>\n",
       "      <td>1096.000000</td>\n",
       "      <td>4776.500000</td>\n",
       "      <td>5956.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>731.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>12.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.861667</td>\n",
       "      <td>0.840896</td>\n",
       "      <td>0.972500</td>\n",
       "      <td>0.507463</td>\n",
       "      <td>3410.000000</td>\n",
       "      <td>6946.000000</td>\n",
       "      <td>8714.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          instant      season          yr        mnth     holiday     weekday  \\\n",
       "count  731.000000  731.000000  731.000000  731.000000  731.000000  731.000000   \n",
       "mean   366.000000    2.496580    0.500684    6.519836    0.028728    2.997264   \n",
       "std    211.165812    1.110807    0.500342    3.451913    0.167155    2.004787   \n",
       "min      1.000000    1.000000    0.000000    1.000000    0.000000    0.000000   \n",
       "25%    183.500000    2.000000    0.000000    4.000000    0.000000    1.000000   \n",
       "50%    366.000000    3.000000    1.000000    7.000000    0.000000    3.000000   \n",
       "75%    548.500000    3.000000    1.000000   10.000000    0.000000    5.000000   \n",
       "max    731.000000    4.000000    1.000000   12.000000    1.000000    6.000000   \n",
       "\n",
       "       workingday  weathersit        temp       atemp         hum   windspeed  \\\n",
       "count  731.000000  731.000000  731.000000  731.000000  731.000000  731.000000   \n",
       "mean     0.683995    1.395349    0.495385    0.474354    0.627894    0.190486   \n",
       "std      0.465233    0.544894    0.183051    0.162961    0.142429    0.077498   \n",
       "min      0.000000    1.000000    0.059130    0.079070    0.000000    0.022392   \n",
       "25%      0.000000    1.000000    0.337083    0.337842    0.520000    0.134950   \n",
       "50%      1.000000    1.000000    0.498333    0.486733    0.626667    0.180975   \n",
       "75%      1.000000    2.000000    0.655417    0.608602    0.730209    0.233214   \n",
       "max      1.000000    3.000000    0.861667    0.840896    0.972500    0.507463   \n",
       "\n",
       "            casual   registered          cnt  \n",
       "count   731.000000   731.000000   731.000000  \n",
       "mean    848.176471  3656.172367  4504.348837  \n",
       "std     686.622488  1560.256377  1937.211452  \n",
       "min       2.000000    20.000000    22.000000  \n",
       "25%     315.500000  2497.000000  3152.000000  \n",
       "50%     713.000000  3662.000000  4548.000000  \n",
       "75%    1096.000000  4776.500000  5956.000000  \n",
       "max    3410.000000  6946.000000  8714.000000  "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#开始探索\n",
    "#对数据值型特征，用常用统计量观察其分布\n",
    "train.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "season属性的不同取值和出现的次数\n",
      "3    188\n",
      "2    184\n",
      "1    181\n",
      "4    178\n",
      "Name: season, dtype: int64\n",
      "\n",
      "mnth属性的不同取值和出现的次数\n",
      "12    62\n",
      "10    62\n",
      "8     62\n",
      "7     62\n",
      "5     62\n",
      "3     62\n",
      "1     62\n",
      "11    60\n",
      "9     60\n",
      "6     60\n",
      "4     60\n",
      "2     57\n",
      "Name: mnth, dtype: int64\n",
      "\n",
      "weathersit属性的不同取值和出现的次数\n",
      "1    463\n",
      "2    247\n",
      "3     21\n",
      "Name: weathersit, dtype: int64\n",
      "\n",
      "weekday属性的不同取值和出现的次数\n",
      "6    105\n",
      "1    105\n",
      "0    105\n",
      "5    104\n",
      "4    104\n",
      "3    104\n",
      "2    104\n",
      "Name: weekday, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "#对类别型特征，观察其取值范围及直方图\n",
    "categorical_features = ['season', 'mnth', 'weathersit', 'weekday']\n",
    "for col in categorical_features:\n",
    "    print ('\\n'+col+'属性的不同取值和出现的次数')\n",
    "    print (train[col].value_counts())\n",
    "    train[col] = train[col].astype('object')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/zcz/.local/lib/python3.6/site-packages/scipy/stats/stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f73f87a92b0>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#每年的分布情况\n",
    "sn.violinplot(data = train[['yr','cnt']], x='yr',y='cnt')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Text(0.5, 1.0, 'dayly distribution of counts')]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import datetime\n",
    "\n",
    "train['date'] = pd.to_datetime(train['dteday'])\n",
    "train['dayofyear'] = train[\"date\"].dt.dayofyear  #减今年的第几天\n",
    "\n",
    "fig,ax = plt.subplots()\n",
    "sn.pointplot(data=train[['dayofyear',\n",
    "                           'cnt',\n",
    "                           'yr']],\n",
    "             x='dayofyear',y='cnt',\n",
    "             hue='yr',ax=ax)\n",
    "ax.set(title=\"dayly distribution of counts\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/zcz/.local/lib/python3.6/site-packages/scipy/stats/stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[Text(0.5, 1.0, 'Seasonly distribution of counts')]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig,ax = plt.subplots()\n",
    "sn.barplot(data=train[['season',\n",
    "                       'cnt']],\n",
    "           x=\"season\",y=\"cnt\")\n",
    "ax.set(title=\"Seasonly distribution of counts\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/zcz/.local/lib/python3.6/site-packages/scipy/stats/stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[Text(0.5, 1.0, 'Monthly distribution of counts')]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig,ax = plt.subplots()\n",
    "sn.barplot(data=train[['mnth',\n",
    "                       'cnt']],\n",
    "           x=\"mnth\",y=\"cnt\")\n",
    "ax.set(title=\"Monthly distribution of counts\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/zcz/.local/lib/python3.6/site-packages/scipy/stats/stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[Text(0.5, 1.0, 'weathersit distribution of counts')]"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig,ax = plt.subplots()\n",
    "sn.barplot(data=train[['weathersit',\n",
    "                       'cnt']],\n",
    "           x=\"weathersit\",y=\"cnt\")\n",
    "ax.set(title=\"weathersit distribution of counts\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/zcz/.local/lib/python3.6/site-packages/scipy/stats/stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f73f3a220f0>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig,(ax1,ax2) = plt.subplots(ncols=2)\n",
    "sn.barplot(data=train,x='holiday',y='cnt',hue='season',ax=ax1)\n",
    "sn.barplot(data=train,x='workingday',y='cnt',hue='season',ax=ax2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f73f3968da0>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "corrMatt = train[[\"temp\",\"atemp\",\n",
    "                  \"hum\",\"windspeed\",\n",
    "                  \"casual\",\"registered\",\n",
    "                  \"cnt\"]].corr()\n",
    "mask = np.array(corrMatt)\n",
    "mask[np.tril_indices_from(mask)] = False\n",
    "sn.heatmap(corrMatt, mask=mask,\n",
    "           vmax=.8, square=True,annot=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 特征工程"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>season_1</th>\n",
       "      <th>season_2</th>\n",
       "      <th>season_3</th>\n",
       "      <th>season_4</th>\n",
       "      <th>mnth_1</th>\n",
       "      <th>mnth_2</th>\n",
       "      <th>mnth_3</th>\n",
       "      <th>mnth_4</th>\n",
       "      <th>mnth_5</th>\n",
       "      <th>mnth_6</th>\n",
       "      <th>...</th>\n",
       "      <th>weathersit_1</th>\n",
       "      <th>weathersit_2</th>\n",
       "      <th>weathersit_3</th>\n",
       "      <th>weekday_0</th>\n",
       "      <th>weekday_1</th>\n",
       "      <th>weekday_2</th>\n",
       "      <th>weekday_3</th>\n",
       "      <th>weekday_4</th>\n",
       "      <th>weekday_5</th>\n",
       "      <th>weekday_6</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 26 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   season_1  season_2  season_3  season_4  mnth_1  mnth_2  mnth_3  mnth_4  \\\n",
       "0         1         0         0         0       1       0       0       0   \n",
       "1         1         0         0         0       1       0       0       0   \n",
       "2         1         0         0         0       1       0       0       0   \n",
       "3         1         0         0         0       1       0       0       0   \n",
       "4         1         0         0         0       1       0       0       0   \n",
       "\n",
       "   mnth_5  mnth_6    ...      weathersit_1  weathersit_2  weathersit_3  \\\n",
       "0       0       0    ...                 0             1             0   \n",
       "1       0       0    ...                 0             1             0   \n",
       "2       0       0    ...                 1             0             0   \n",
       "3       0       0    ...                 1             0             0   \n",
       "4       0       0    ...                 1             0             0   \n",
       "\n",
       "   weekday_0  weekday_1  weekday_2  weekday_3  weekday_4  weekday_5  weekday_6  \n",
       "0          0          0          0          0          0          0          1  \n",
       "1          1          0          0          0          0          0          0  \n",
       "2          0          1          0          0          0          0          0  \n",
       "3          0          0          1          0          0          0          0  \n",
       "4          0          0          0          1          0          0          0  \n",
       "\n",
       "[5 rows x 26 columns]"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "categorical_features = ['season','mnth','weathersit','weekday']\n",
    "x_train_cat = train[categorical_features]\n",
    "x_train_cat = pd.get_dummies(x_train_cat)\n",
    "x_train_cat.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.355170</td>\n",
       "      <td>0.373517</td>\n",
       "      <td>0.828620</td>\n",
       "      <td>0.284606</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.379232</td>\n",
       "      <td>0.360541</td>\n",
       "      <td>0.715771</td>\n",
       "      <td>0.466215</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.171000</td>\n",
       "      <td>0.144830</td>\n",
       "      <td>0.449638</td>\n",
       "      <td>0.465740</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.175530</td>\n",
       "      <td>0.174649</td>\n",
       "      <td>0.607131</td>\n",
       "      <td>0.284297</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.209120</td>\n",
       "      <td>0.197158</td>\n",
       "      <td>0.449313</td>\n",
       "      <td>0.339143</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       temp     atemp       hum  windspeed\n",
       "0  0.355170  0.373517  0.828620   0.284606\n",
       "1  0.379232  0.360541  0.715771   0.466215\n",
       "2  0.171000  0.144830  0.449638   0.465740\n",
       "3  0.175530  0.174649  0.607131   0.284297\n",
       "4  0.209120  0.197158  0.449313   0.339143"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#数值型变量预处理\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "mn_x = MinMaxScaler()\n",
    "numerical_features = ['temp','atemp','hum','windspeed']\n",
    "temp = mn_x.fit_transform(train[numerical_features])\n",
    "\n",
    "x_train_num = pd.DataFrame(data=temp, columns=numerical_features, index =train.index)\n",
    "x_train_num.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>season_1</th>\n",
       "      <th>season_2</th>\n",
       "      <th>season_3</th>\n",
       "      <th>season_4</th>\n",
       "      <th>mnth_1</th>\n",
       "      <th>mnth_2</th>\n",
       "      <th>mnth_3</th>\n",
       "      <th>mnth_4</th>\n",
       "      <th>mnth_5</th>\n",
       "      <th>mnth_6</th>\n",
       "      <th>...</th>\n",
       "      <th>weekday_3</th>\n",
       "      <th>weekday_4</th>\n",
       "      <th>weekday_5</th>\n",
       "      <th>weekday_6</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>holiday</th>\n",
       "      <th>workingday</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.355170</td>\n",
       "      <td>0.373517</td>\n",
       "      <td>0.828620</td>\n",
       "      <td>0.284606</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.379232</td>\n",
       "      <td>0.360541</td>\n",
       "      <td>0.715771</td>\n",
       "      <td>0.466215</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.171000</td>\n",
       "      <td>0.144830</td>\n",
       "      <td>0.449638</td>\n",
       "      <td>0.465740</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.175530</td>\n",
       "      <td>0.174649</td>\n",
       "      <td>0.607131</td>\n",
       "      <td>0.284297</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.209120</td>\n",
       "      <td>0.197158</td>\n",
       "      <td>0.449313</td>\n",
       "      <td>0.339143</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 32 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   season_1  season_2  season_3  season_4  mnth_1  mnth_2  mnth_3  mnth_4  \\\n",
       "0         1         0         0         0       1       0       0       0   \n",
       "1         1         0         0         0       1       0       0       0   \n",
       "2         1         0         0         0       1       0       0       0   \n",
       "3         1         0         0         0       1       0       0       0   \n",
       "4         1         0         0         0       1       0       0       0   \n",
       "\n",
       "   mnth_5  mnth_6     ...      weekday_3  weekday_4  weekday_5  weekday_6  \\\n",
       "0       0       0     ...              0          0          0          1   \n",
       "1       0       0     ...              0          0          0          0   \n",
       "2       0       0     ...              0          0          0          0   \n",
       "3       0       0     ...              0          0          0          0   \n",
       "4       0       0     ...              1          0          0          0   \n",
       "\n",
       "       temp     atemp       hum  windspeed  holiday  workingday  \n",
       "0  0.355170  0.373517  0.828620   0.284606        0           0  \n",
       "1  0.379232  0.360541  0.715771   0.466215        0           0  \n",
       "2  0.171000  0.144830  0.449638   0.465740        0           1  \n",
       "3  0.175530  0.174649  0.607131   0.284297        0           1  \n",
       "4  0.209120  0.197158  0.449313   0.339143        0           1  \n",
       "\n",
       "[5 rows x 32 columns]"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Join categorical and numerical features\n",
    "x_train = pd.concat([x_train_cat, x_train_num, train['holiday'],  train['workingday']], axis = 1, ignore_index=False)\n",
    "x_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>instant</th>\n",
       "      <th>season_1</th>\n",
       "      <th>season_2</th>\n",
       "      <th>season_3</th>\n",
       "      <th>season_4</th>\n",
       "      <th>mnth_1</th>\n",
       "      <th>mnth_2</th>\n",
       "      <th>mnth_3</th>\n",
       "      <th>mnth_4</th>\n",
       "      <th>mnth_5</th>\n",
       "      <th>...</th>\n",
       "      <th>weekday_5</th>\n",
       "      <th>weekday_6</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>holiday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>yr</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.355170</td>\n",
       "      <td>0.373517</td>\n",
       "      <td>0.828620</td>\n",
       "      <td>0.284606</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>985</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.379232</td>\n",
       "      <td>0.360541</td>\n",
       "      <td>0.715771</td>\n",
       "      <td>0.466215</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>801</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.171000</td>\n",
       "      <td>0.144830</td>\n",
       "      <td>0.449638</td>\n",
       "      <td>0.465740</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1349</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.175530</td>\n",
       "      <td>0.174649</td>\n",
       "      <td>0.607131</td>\n",
       "      <td>0.284297</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1562</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.209120</td>\n",
       "      <td>0.197158</td>\n",
       "      <td>0.449313</td>\n",
       "      <td>0.339143</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1600</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 35 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   instant  season_1  season_2  season_3  season_4  mnth_1  mnth_2  mnth_3  \\\n",
       "0        1         1         0         0         0       1       0       0   \n",
       "1        2         1         0         0         0       1       0       0   \n",
       "2        3         1         0         0         0       1       0       0   \n",
       "3        4         1         0         0         0       1       0       0   \n",
       "4        5         1         0         0         0       1       0       0   \n",
       "\n",
       "   mnth_4  mnth_5  ...   weekday_5  weekday_6      temp     atemp       hum  \\\n",
       "0       0       0  ...           0          1  0.355170  0.373517  0.828620   \n",
       "1       0       0  ...           0          0  0.379232  0.360541  0.715771   \n",
       "2       0       0  ...           0          0  0.171000  0.144830  0.449638   \n",
       "3       0       0  ...           0          0  0.175530  0.174649  0.607131   \n",
       "4       0       0  ...           0          0  0.209120  0.197158  0.449313   \n",
       "\n",
       "   windspeed  holiday  workingday  yr   cnt  \n",
       "0   0.284606        0           0   0   985  \n",
       "1   0.466215        0           0   0   801  \n",
       "2   0.465740        0           1   0  1349  \n",
       "3   0.284297        0           1   0  1562  \n",
       "4   0.339143        0           1   0  1600  \n",
       "\n",
       "[5 rows x 35 columns]"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "FE_train = pd.concat([train['instant'], x_train,  train['yr'],train['cnt']], axis = 1)\n",
    "FE_train.to_csv('FE_day.csv', index=False)\n",
    "FE_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 731 entries, 0 to 730\n",
      "Data columns (total 35 columns):\n",
      "instant         731 non-null int64\n",
      "season_1        731 non-null uint8\n",
      "season_2        731 non-null uint8\n",
      "season_3        731 non-null uint8\n",
      "season_4        731 non-null uint8\n",
      "mnth_1          731 non-null uint8\n",
      "mnth_2          731 non-null uint8\n",
      "mnth_3          731 non-null uint8\n",
      "mnth_4          731 non-null uint8\n",
      "mnth_5          731 non-null uint8\n",
      "mnth_6          731 non-null uint8\n",
      "mnth_7          731 non-null uint8\n",
      "mnth_8          731 non-null uint8\n",
      "mnth_9          731 non-null uint8\n",
      "mnth_10         731 non-null uint8\n",
      "mnth_11         731 non-null uint8\n",
      "mnth_12         731 non-null uint8\n",
      "weathersit_1    731 non-null uint8\n",
      "weathersit_2    731 non-null uint8\n",
      "weathersit_3    731 non-null uint8\n",
      "weekday_0       731 non-null uint8\n",
      "weekday_1       731 non-null uint8\n",
      "weekday_2       731 non-null uint8\n",
      "weekday_3       731 non-null uint8\n",
      "weekday_4       731 non-null uint8\n",
      "weekday_5       731 non-null uint8\n",
      "weekday_6       731 non-null uint8\n",
      "temp            731 non-null float64\n",
      "atemp           731 non-null float64\n",
      "hum             731 non-null float64\n",
      "windspeed       731 non-null float64\n",
      "holiday         731 non-null int64\n",
      "workingday      731 non-null int64\n",
      "yr              731 non-null int64\n",
      "cnt             731 non-null int64\n",
      "dtypes: float64(4), int64(5), uint8(26)\n",
      "memory usage: 70.0 KB\n"
     ]
    }
   ],
   "source": [
    "FE_train.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 从数据中分离输入特征x和输出y\n",
    "y = FE_train['cnt'].values\n",
    "X = FE_train.drop('cnt', axis = 1)\n",
    "\n",
    "#用于后续显示权重系数对应的特征\n",
    "columns = X.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(584, 34)"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#将数据分割训练数据与测试数据\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "# 随机采样20%的数据构建测试样本，其余作为训练样本\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=33, test_size=0.2)\n",
    "X_train.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 线性回归模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>columns</th>\n",
       "      <th>coef</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>yr</td>\n",
       "      <td>4550.708897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>temp</td>\n",
       "      <td>2654.792827</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>mnth_9</td>\n",
       "      <td>1287.992360</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>atemp</td>\n",
       "      <td>995.293778</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>mnth_10</td>\n",
       "      <td>929.887649</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>weathersit_1</td>\n",
       "      <td>914.410909</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>season_4</td>\n",
       "      <td>830.579518</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>mnth_12</td>\n",
       "      <td>586.296405</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>mnth_8</td>\n",
       "      <td>517.803038</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>weathersit_2</td>\n",
       "      <td>409.589079</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>mnth_11</td>\n",
       "      <td>407.138803</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>weekday_6</td>\n",
       "      <td>238.417312</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>workingday</td>\n",
       "      <td>216.956549</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>mnth_6</td>\n",
       "      <td>189.797216</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>season_2</td>\n",
       "      <td>85.141889</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>weekday_5</td>\n",
       "      <td>77.516263</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>weekday_3</td>\n",
       "      <td>66.464787</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>weekday_4</td>\n",
       "      <td>43.650546</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>mnth_5</td>\n",
       "      <td>5.009200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>instant</td>\n",
       "      <td>-6.919060</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>weekday_2</td>\n",
       "      <td>-31.943212</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>season_3</td>\n",
       "      <td>-130.807162</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>weekday_0</td>\n",
       "      <td>-191.612446</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>weekday_1</td>\n",
       "      <td>-202.493250</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>mnth_7</td>\n",
       "      <td>-203.137582</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>holiday</td>\n",
       "      <td>-263.761415</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>mnth_4</td>\n",
       "      <td>-485.714239</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>mnth_3</td>\n",
       "      <td>-541.439917</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>season_1</td>\n",
       "      <td>-784.914245</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>windspeed</td>\n",
       "      <td>-1174.845790</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>mnth_2</td>\n",
       "      <td>-1207.111892</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>hum</td>\n",
       "      <td>-1298.592138</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>weathersit_3</td>\n",
       "      <td>-1323.999988</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>mnth_1</td>\n",
       "      <td>-1486.521042</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         columns         coef\n",
       "33            yr  4550.708897\n",
       "27          temp  2654.792827\n",
       "13        mnth_9  1287.992360\n",
       "28         atemp   995.293778\n",
       "14       mnth_10   929.887649\n",
       "17  weathersit_1   914.410909\n",
       "4       season_4   830.579518\n",
       "16       mnth_12   586.296405\n",
       "12        mnth_8   517.803038\n",
       "18  weathersit_2   409.589079\n",
       "15       mnth_11   407.138803\n",
       "26     weekday_6   238.417312\n",
       "32    workingday   216.956549\n",
       "10        mnth_6   189.797216\n",
       "2       season_2    85.141889\n",
       "25     weekday_5    77.516263\n",
       "23     weekday_3    66.464787\n",
       "24     weekday_4    43.650546\n",
       "9         mnth_5     5.009200\n",
       "0        instant    -6.919060\n",
       "22     weekday_2   -31.943212\n",
       "3       season_3  -130.807162\n",
       "20     weekday_0  -191.612446\n",
       "21     weekday_1  -202.493250\n",
       "11        mnth_7  -203.137582\n",
       "31       holiday  -263.761415\n",
       "8         mnth_4  -485.714239\n",
       "7         mnth_3  -541.439917\n",
       "1       season_1  -784.914245\n",
       "30     windspeed -1174.845790\n",
       "6         mnth_2 -1207.111892\n",
       "29           hum -1298.592138\n",
       "19  weathersit_3 -1323.999988\n",
       "5         mnth_1 -1486.521042"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 线性回归\n",
    "#class sklearn.linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=1)\n",
    "from sklearn.linear_model import LinearRegression\n",
    "\n",
    "# 使用默认配置初始化\n",
    "lr = LinearRegression()\n",
    "\n",
    "# 训练模型参数\n",
    "lr.fit(X_train, y_train)\n",
    "\n",
    "# 预测\n",
    "y_test_pred_lr = lr.predict(X_test)\n",
    "y_train_pred_lr = lr.predict(X_train)\n",
    "\n",
    "\n",
    "# 看看各特征的权重系数，系数的绝对值大小可视为该特征的重要性\n",
    "fs = pd.DataFrame({\"columns\":list(columns), \"coef\":list((lr.coef_.T))})\n",
    "fs.sort_values(by=['coef'],ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import r2_score  #评价回归预测模型的性能"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The r2 score of BikeSharing on test is 0.8279474225980327\n",
      "The r2 score of BikeSharing on train is 0.8516480637403496\n"
     ]
    }
   ],
   "source": [
    "# 使用r2_score评价模型在测试集和训练集上的性能，并输出评估结果\n",
    "#测试集\n",
    "print ('The r2 score of BikeSharing on test is', r2_score(y_test, y_test_pred_lr))\n",
    "#训练集\n",
    "print ('The r2 score of BikeSharing on train is', r2_score(y_train, y_train_pred_lr))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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J2dv0twLxbz22mu8++67/Vake/LV9J+BkcA9ecufAg4OIeTu61BgDckdgSSpxzZu3MioUaPKskBoaKiurmbUqFFs3Lix356jJ0X6ZOBHmZu457oV2Aa4I4Swawjh0yQ3U1/QmyO7JUlSoqgiHULYB9gd+F/562KMy4BDgF2AxcDtmZ8L82MlSVLxipqTjjEuIrk4SaH1s0vVKElKi3K8uYTSI6032JCUIrW1tYPdhC0sXAjJNSL6X3t7JTU1cMghA/N8PfXss8/ypS99iV/96ldsv33+MbzvCyFw7bXXcsQRR5TsuZcvX85BBx3Ed7/7Xfbcc8+S7TfXgQceyGc/+1m+8pWv9Mv+084iLalbv/lNLS0tHRQ6K2XsWJgzZ2Da09YGjY0D81wbN25i5swuBxK7dP755/PDH/4QSM6pHTduHPvssw9nn302EyZM6Gbr4s2cOZMnn3ySD33oQyXb50A67rjjmDRpEldeeWWn6//93/+9rA8etEhL6lZLSwfPPrueurquq3RK7yw7qPbcc09uvPFGOjo6eO2117j88ss544wz+MEPflCy5xg5ciTjxo0r2f7SZrvtthvsJmz23nvvMXLkyAF9Tm9VKUn9ZMSIEYwbN44JEyaw11578bnPfY7nn38+ez1nADZs2MCCBQs48MAD2W233Tj88MM/UMQffPBBDjvsMHbbbTf23ntvjj32WFasSC7s+OyzzxJC2PwYYNGiRXzqU59it91241Of+hSLFi3aYn/Lly8nhMDvfve7LZYffPDBLFiwYPPj7373u3zuc59j5syZ7Lfffpx55pm8+eabBXO+7bbbOOigg/jIRz7CPvvsw9y5czefc9wbBx54IN/5zne2eHzTTTdxxRVXsPfeezN79myuuuqqD5wGdf/993PooYey2267ccghh3DrrbduEfPII49w9NFH09DQwKxZszjppJN4+eWXN69//fXX+fu//3t+8pOfcOKJJzJjxgxuuummXufRW/akJWkArFy5kl/84hdUVVVtcfW0iy++mKVLl3L55ZczefJkXnjhBS655BKqqqo4+uijWbJkCZdeeilXXXUVe+21F21tbfz+978v+DynnHIKhx12GPPnz2flypVdDiUX46yzzmLq1Kk0NzdzzTXXcNZZZ/HAAw90Gvv4449z++23c/3117PzzjuzatUqnn322V4/d1ceeOABTjzxRP7t3/6NP/zhD5x77rlMnz6do48+GoAFCxbw8MMPc8EFF7Dzzjvz0ksvcemll7J+/Xq+/vWvA0mv+NRTT2XatGm0tbVx8803c/LJJ/Poo49u0Vu+/vrrOeecc7jkkktKnkcxLNKS1E9+85vfMHPmTDo6Ojb3Jk844YTNd1ZatmwZP/rRj/jpT3/K1KlTAZg4cSIvvfQSDzzwAEcffTRNTU2MHj2aOXPmkL0zYKFrqH/ve99j2223Zd68eWy11VZMmzaNs846i1NOOaXH7T/22GOB5KIdEydO5JJLLuHII49k5cqVnc6rv/HGG4wbN46PfexjjBgxgg9/+MPssssuPX7e7jQ0NHDSSScByRXpHn74YZ555hmOPvpo1q5dy5133smCBQvYf//9geQ1/frXv84VV1yxuUgfddRRW+zz6quvZtasWbzwwgs0NDRsXv75z3+eT3/60yXPoVgWaUnqJ7vvvjvXXHMN69ev5+c//znPPPPM5iIBsGTJEjZt2sRnP/vZLbbbuHHj5lO/Zs+ezcSJEznooIOYPXs2++yzDwcffHCXc7V/+ctf2G233ba46UNu0emJ3/72t9x11128/PLLtLS0kL218euvv95pkT7ssMO47777OOCAA/joRz/KPvvss8WXi1LJL/zjx49n+fLlAPzpT39i3bp1fO1rX6Oi4v0D/trb21m/fj1vv/022223HS+++CK33HILL774Iu+8887muDfeeGOL12v33Xcvadt7yiItSf2kurqayZMnA/C3f/u3vPbaa8ybN48rrrgCYHPR+/73v8/o0aO32DZbYMaMGcNDDz3Ec889x9NPP80PfvADrrvuOu69914+8pGP9KpdXd2sJHfO9o033uC0007j8MMP5/TTT2fbbbdl5cqVHH/88WzYsKHT7SdMmMBjjz3GokWLWLRoEbfeeivXX389Dz74IPX1vb4p4geMGDFii8cVFRWbX8vsvzfddBNTpkz5wLbbbLMNa9eu5YQTTqChoYFvfvOb1NXVAXD44Yd/ILf892WgeeCYJA2Q008/nYcffpgXXngBgF133RWApqYmJk+evMXPpEmTNm9XVVXFXnvtxRlnnMHDDz/MuHHjePTRRzt9jqlTp/LCCy9scXvE5557bouYbC889yCwt956i5Ur37/q8wsvvMC6des477zzaGhoYKeddqK5ubnbHEeOHMn+++/PeeedxyOPPMK6detYuHBht9uVyrRp0xg1ahTLli37wGs6efJkqqqq+Mtf/sLbb7/NmWeeyaxZs5g6dSqrVq3aXODTxJ60pCFn7NiBO+Wrvb2i4PnhPTFlyhQOOOAAbrzxRu666y4mT57MUUcdxcUXX8w555zDzJkzWbt2LUuWLOHtt9/mpJNOYuHChSxfvpw999yT7bbbjqVLl7JixYrNc9j5vvjFL3Lvvfdy8cUXM3fuXN58803mz5+/RUx1dTV77LEHd955JzvttBMbN25k/vz5WxwwNXnyZCoqKrjvvvs48sgjiTHy7W9/u2B+Dz74IJs2bWL33XenpqaGZ555htWrVzNt2rSC261atYoXX3xxi2Vjx45l4sSJBbfrzJgxYzj55JO54YYbqKioYN9996W9vZ0//vGPmw8y+/CHP8zIkSO5//77OeGEE3j99de5/vrrtxgeTwuLtKQhZ6AumgKwYUNH5rfSXB507ty5HHPMMTz77LPMmjWLefPmcffdd3PbbbexfPlyxowZw/Tp0zcftLXNNttw3333cdttt7F69Wrq6+s59dRTNx/JnG/ChAncdtttXHXVVRxxxBFMmTKFCy+8kOOPP36LuKuuuoqLL76YL3zhC4wfP55zzjmH1157bfP6nXfemfPPP5+7776bO++8k1133ZULLriAE088scvcttlmG+6++26uu+463nvvPSZOnMjll1/OvvvuW/A1eeKJJ3jiiSe2WPbRj36Uu+66q+B2XfnqV7/K+PHjeeCBB7j66quprq5mypQpHHnkkUAyknDddddxww038NBDDzF16lQuuOCCD7xGaVCRxu794sWL362qqtpmRkqvjhBjBAofYTlcmXt55n7//a2Zi5nUdRkzYwZ85jOle85XX30VYPOc7mDxnsrmXkh3/08bGxtpb29f1dDQ8De9aYdz0pIkpZRFWpKklLJIS5KUUhZpSZJSyiItKZUqKyu3ONdXSqP29vYuLw5TChZpSalUXV29+TKOUhq9/fbbrF+/vl+Pfvc8aUmpVFdXx/r161m5ciXvvvvu5mtZD7Rsb36wnn8wmXvXuWevBV5TU1Pw1MS+sictKZUqKirYYYcdqKur+8C1mgdSa2srra2tg/b8g8ncu859xIgR1NXVscMOO/TrlcrsSUtKrYqKCsaNGzeobche1GKw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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#在训练集上观察预测残差的分布，看是否符合模型假设：噪声为0均值的高斯噪声\n",
    "f, ax = plt.subplots(figsize=(7, 5)) \n",
    "f.tight_layout() \n",
    "ax.hist(y_train - y_train_pred_lr,bins=40, label='Residuals Linear', color='b', alpha=.5); \n",
    "ax.set_title(\"Histogram of Residuals\") \n",
    "ax.legend(loc='best');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "残差分布和高斯分布比较匹配，有噪声\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x216 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#还可以观察预测值与真值的散点图\n",
    "plt.figure(figsize=(4, 3))\n",
    "plt.scatter(y_train, y_train_pred_lr)\n",
    "plt.plot([-3, 3], [-3, 3], '--k')\n",
    "plt.axis('tight')\n",
    "plt.xlabel('True cnt')\n",
    "plt.ylabel('Predicted cnt')\n",
    "plt.tight_layout()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 7.52639421e+10, -2.85879682e+10, -1.99464568e+10, -8.63005097e+10,\n",
       "        9.73421138e+10, -4.54526624e+10, -1.90698022e+10, -4.51950942e+10,\n",
       "       -7.64684769e+09, -1.84723285e+10,  7.26116071e+10, -5.26721909e+10,\n",
       "        1.23198857e+10,  3.46572904e+10, -9.62226239e+10,  1.21300184e+11,\n",
       "        6.34976132e+09, -8.73213998e+10, -3.65315061e+10,  8.63600850e+10,\n",
       "        2.56782606e+10,  1.30180406e+11,  2.39250837e+10, -1.07464166e+11,\n",
       "       -4.01493261e+10, -8.01335717e+09, -6.16497218e+10,  9.59228805e+09,\n",
       "        3.28202707e+09,  4.82276851e+10,  3.59055993e+10,  4.49495862e+09,\n",
       "       -6.01631819e+09, -6.46040438e+10])"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 线性模型，随机梯度下降优化模型参数\n",
    "from sklearn.linear_model import SGDRegressor\n",
    "\n",
    "# 使用默认配置初始化线\n",
    "sgdr = SGDRegressor(max_iter=1000)\n",
    "\n",
    "# 训练：参数估计\n",
    "sgdr.fit(X_train, y_train)\n",
    "\n",
    "# 预测\n",
    "sgdr_y_predict = sgdr.predict(X_test)\n",
    "\n",
    "sgdr.coef_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The value of default measurement of SGDRegressor on test is -2.3615716944654293e+20\n",
      "The value of default measurement of SGDRegressor on train is -2.7666117308925218e+20\n"
     ]
    }
   ],
   "source": [
    "# 使用SGDRegressor模型自带的评估模块(评价准则为r2_score)，并输出评估结果\n",
    "print ('The value of default measurement of SGDRegressor on test is', sgdr.score(X_test, y_test))\n",
    "print ('The value of default measurement of SGDRegressor on train is', sgdr.score(X_train, y_train))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# L2正则 --> 岭回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The r2 score of RidgeCV on test is 0.8289740676119924\n",
      "The r2 score of RidgeCV on train is 0.8497700029725636\n"
     ]
    }
   ],
   "source": [
    "#岭回归／L2正则\n",
    "#class sklearn.linear_model.RidgeCV(alphas=(0.1, 1.0, 10.0), fit_intercept=True, \n",
    "#                                  normalize=False, scoring=None, cv=None, gcv_mode=None, \n",
    "#                                  store_cv_values=False)\n",
    "from sklearn.linear_model import  RidgeCV\n",
    "\n",
    "#设置超参数（正则参数）范围\n",
    "alphas = [ 0.01, 0.1, 1, 10,100]\n",
    "#n_alphas = 20\n",
    "#alphas = np.logspace(-5,2,n_alphas)\n",
    "\n",
    "#生成一个RidgeCV实例\n",
    "ridge = RidgeCV(alphas=alphas, store_cv_values=True)  \n",
    "\n",
    "#模型训练\n",
    "ridge.fit(X_train, y_train)    \n",
    "\n",
    "#预测\n",
    "y_test_pred_ridge = ridge.predict(X_test)\n",
    "y_train_pred_ridge = ridge.predict(X_train)\n",
    "\n",
    "\n",
    "# 评估，使用r2_score评价模型在测试集和训练集上的性能\n",
    "print ('The r2 score of RidgeCV on test is', r2_score(y_test, y_test_pred_ridge))\n",
    "print ('The r2 score of RidgeCV on train is', r2_score(y_train, y_train_pred_ridge))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "alpha is: 1.0\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>columns</th>\n",
       "      <th>coef_lr</th>\n",
       "      <th>coef_ridge</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>yr</td>\n",
       "      <td>4550.708897</td>\n",
       "      <td>1504.623924</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>temp</td>\n",
       "      <td>2654.792827</td>\n",
       "      <td>1778.493414</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>mnth_9</td>\n",
       "      <td>1287.992360</td>\n",
       "      <td>678.352931</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>atemp</td>\n",
       "      <td>995.293778</td>\n",
       "      <td>1546.374034</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>mnth_10</td>\n",
       "      <td>929.887649</td>\n",
       "      <td>84.873020</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>weathersit_1</td>\n",
       "      <td>914.410909</td>\n",
       "      <td>914.843092</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>season_4</td>\n",
       "      <td>830.579518</td>\n",
       "      <td>767.205317</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>mnth_12</td>\n",
       "      <td>586.296405</td>\n",
       "      <td>-824.928596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>mnth_8</td>\n",
       "      <td>517.803038</td>\n",
       "      <td>205.686009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>weathersit_2</td>\n",
       "      <td>409.589079</td>\n",
       "      <td>388.865215</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>mnth_11</td>\n",
       "      <td>407.138803</td>\n",
       "      <td>-725.828529</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>weekday_6</td>\n",
       "      <td>238.417312</td>\n",
       "      <td>227.515740</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>workingday</td>\n",
       "      <td>216.956549</td>\n",
       "      <td>212.558710</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>mnth_6</td>\n",
       "      <td>189.797216</td>\n",
       "      <td>369.663154</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>season_2</td>\n",
       "      <td>85.141889</td>\n",
       "      <td>110.998614</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>weekday_5</td>\n",
       "      <td>77.516263</td>\n",
       "      <td>81.396550</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>weekday_3</td>\n",
       "      <td>66.464787</td>\n",
       "      <td>59.857933</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>weekday_4</td>\n",
       "      <td>43.650546</td>\n",
       "      <td>62.795850</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>mnth_5</td>\n",
       "      <td>5.009200</td>\n",
       "      <td>387.713628</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>instant</td>\n",
       "      <td>-6.919060</td>\n",
       "      <td>1.417157</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>weekday_2</td>\n",
       "      <td>-31.943212</td>\n",
       "      <td>-34.140080</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>season_3</td>\n",
       "      <td>-130.807162</td>\n",
       "      <td>-91.388275</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>weekday_0</td>\n",
       "      <td>-191.612446</td>\n",
       "      <td>-191.851510</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>weekday_1</td>\n",
       "      <td>-202.493250</td>\n",
       "      <td>-205.574484</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>mnth_7</td>\n",
       "      <td>-203.137582</td>\n",
       "      <td>-242.548582</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>holiday</td>\n",
       "      <td>-263.761415</td>\n",
       "      <td>-248.222941</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>mnth_4</td>\n",
       "      <td>-485.714239</td>\n",
       "      <td>106.306513</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>mnth_3</td>\n",
       "      <td>-541.439917</td>\n",
       "      <td>298.550050</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>season_1</td>\n",
       "      <td>-784.914245</td>\n",
       "      <td>-786.815656</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>windspeed</td>\n",
       "      <td>-1174.845790</td>\n",
       "      <td>-1087.773198</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>mnth_2</td>\n",
       "      <td>-1207.111892</td>\n",
       "      <td>-143.125249</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>hum</td>\n",
       "      <td>-1298.592138</td>\n",
       "      <td>-1142.397276</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>weathersit_3</td>\n",
       "      <td>-1323.999988</td>\n",
       "      <td>-1303.708307</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>mnth_1</td>\n",
       "      <td>-1486.521042</td>\n",
       "      <td>-194.714350</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         columns      coef_lr   coef_ridge\n",
       "33            yr  4550.708897  1504.623924\n",
       "27          temp  2654.792827  1778.493414\n",
       "13        mnth_9  1287.992360   678.352931\n",
       "28         atemp   995.293778  1546.374034\n",
       "14       mnth_10   929.887649    84.873020\n",
       "17  weathersit_1   914.410909   914.843092\n",
       "4       season_4   830.579518   767.205317\n",
       "16       mnth_12   586.296405  -824.928596\n",
       "12        mnth_8   517.803038   205.686009\n",
       "18  weathersit_2   409.589079   388.865215\n",
       "15       mnth_11   407.138803  -725.828529\n",
       "26     weekday_6   238.417312   227.515740\n",
       "32    workingday   216.956549   212.558710\n",
       "10        mnth_6   189.797216   369.663154\n",
       "2       season_2    85.141889   110.998614\n",
       "25     weekday_5    77.516263    81.396550\n",
       "23     weekday_3    66.464787    59.857933\n",
       "24     weekday_4    43.650546    62.795850\n",
       "9         mnth_5     5.009200   387.713628\n",
       "0        instant    -6.919060     1.417157\n",
       "22     weekday_2   -31.943212   -34.140080\n",
       "3       season_3  -130.807162   -91.388275\n",
       "20     weekday_0  -191.612446  -191.851510\n",
       "21     weekday_1  -202.493250  -205.574484\n",
       "11        mnth_7  -203.137582  -242.548582\n",
       "31       holiday  -263.761415  -248.222941\n",
       "8         mnth_4  -485.714239   106.306513\n",
       "7         mnth_3  -541.439917   298.550050\n",
       "1       season_1  -784.914245  -786.815656\n",
       "30     windspeed -1174.845790 -1087.773198\n",
       "6         mnth_2 -1207.111892  -143.125249\n",
       "29           hum -1298.592138 -1142.397276\n",
       "19  weathersit_3 -1323.999988 -1303.708307\n",
       "5         mnth_1 -1486.521042  -194.714350"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mse_mean = np.mean(ridge.cv_values_, axis = 0)\n",
    "plt.plot(np.log10(alphas), mse_mean.reshape(len(alphas),1)) \n",
    "\n",
    "#这是为了标出最佳参数的位置，不是必须\n",
    "#lt.plot(np.log10(ridge.alpha_)*np.ones(3), [0.28, 0.29, 0.30])\n",
    "\n",
    "plt.xlabel('log(alpha)')\n",
    "plt.ylabel('mse')\n",
    "plt.show()\n",
    "\n",
    "print ('alpha is:', ridge.alpha_)\n",
    "\n",
    "# 看看各特征的权重系数，系数的绝对值大小可视为该特征的重要性\n",
    "fs = pd.DataFrame({\"columns\":list(columns), \"coef_lr\":list((lr.coef_.T)), \"coef_ridge\":list((ridge.coef_.T))})\n",
    "fs.sort_values(by=['coef_lr'],ascending=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# L1正则 --> Lasso"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The r2 score of LassoCV on test is 0.47062572154686677\n",
      "The r2 score of LassoCV on train is 0.4427527534180159\n"
     ]
    }
   ],
   "source": [
    "#### Lasso／L1正则\n",
    "from sklearn.linear_model import LassoCV\n",
    "\n",
    "#生成一个LassoCV实例\n",
    "lasso = LassoCV()  \n",
    "\n",
    "#训练（内含CV）\n",
    "lasso.fit(X_train, y_train)  \n",
    "\n",
    "#测试\n",
    "y_test_pred_lasso = lasso.predict(X_test)\n",
    "y_train_pred_lasso = lasso.predict(X_train)\n",
    "\n",
    "\n",
    "# 评估，使用r2_score评价模型在测试集和训练集上的性能\n",
    "print ('The r2 score of LassoCV on test is', r2_score(y_test, y_test_pred_lasso))\n",
    "print ('The r2 score of LassoCV on train is', r2_score(y_train, y_train_pred_lasso))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "alpha is: 256.4697701374553\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>columns</th>\n",
       "      <th>coef_lr</th>\n",
       "      <th>coef_ridge</th>\n",
       "      <th>coef_lasso</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>yr</td>\n",
       "      <td>4550.708897</td>\n",
       "      <td>1504.623924</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>temp</td>\n",
       "      <td>2654.792827</td>\n",
       "      <td>1778.493414</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>mnth_9</td>\n",
       "      <td>1287.992360</td>\n",
       "      <td>678.352931</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>atemp</td>\n",
       "      <td>995.293778</td>\n",
       "      <td>1546.374034</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>mnth_10</td>\n",
       "      <td>929.887649</td>\n",
       "      <td>84.873020</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>weathersit_1</td>\n",
       "      <td>914.410909</td>\n",
       "      <td>914.843092</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>season_4</td>\n",
       "      <td>830.579518</td>\n",
       "      <td>767.205317</td>\n",
       "      <td>-0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>mnth_12</td>\n",
       "      <td>586.296405</td>\n",
       "      <td>-824.928596</td>\n",
       "      <td>-0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>mnth_8</td>\n",
       "      <td>517.803038</td>\n",
       "      <td>205.686009</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>weathersit_2</td>\n",
       "      <td>409.589079</td>\n",
       "      <td>388.865215</td>\n",
       "      <td>-0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>mnth_11</td>\n",
       "      <td>407.138803</td>\n",
       "      <td>-725.828529</td>\n",
       "      <td>-0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>weekday_6</td>\n",
       "      <td>238.417312</td>\n",
       "      <td>227.515740</td>\n",
       "      <td>-0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>workingday</td>\n",
       "      <td>216.956549</td>\n",
       "      <td>212.558710</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>mnth_6</td>\n",
       "      <td>189.797216</td>\n",
       "      <td>369.663154</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>season_2</td>\n",
       "      <td>85.141889</td>\n",
       "      <td>110.998614</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>weekday_5</td>\n",
       "      <td>77.516263</td>\n",
       "      <td>81.396550</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>weekday_3</td>\n",
       "      <td>66.464787</td>\n",
       "      <td>59.857933</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>weekday_4</td>\n",
       "      <td>43.650546</td>\n",
       "      <td>62.795850</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>mnth_5</td>\n",
       "      <td>5.009200</td>\n",
       "      <td>387.713628</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>instant</td>\n",
       "      <td>-6.919060</td>\n",
       "      <td>1.417157</td>\n",
       "      <td>5.456671</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>weekday_2</td>\n",
       "      <td>-31.943212</td>\n",
       "      <td>-34.140080</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>season_3</td>\n",
       "      <td>-130.807162</td>\n",
       "      <td>-91.388275</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>weekday_0</td>\n",
       "      <td>-191.612446</td>\n",
       "      <td>-191.851510</td>\n",
       "      <td>-0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>weekday_1</td>\n",
       "      <td>-202.493250</td>\n",
       "      <td>-205.574484</td>\n",
       "      <td>-0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>mnth_7</td>\n",
       "      <td>-203.137582</td>\n",
       "      <td>-242.548582</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>holiday</td>\n",
       "      <td>-263.761415</td>\n",
       "      <td>-248.222941</td>\n",
       "      <td>-0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>mnth_4</td>\n",
       "      <td>-485.714239</td>\n",
       "      <td>106.306513</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>mnth_3</td>\n",
       "      <td>-541.439917</td>\n",
       "      <td>298.550050</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>season_1</td>\n",
       "      <td>-784.914245</td>\n",
       "      <td>-786.815656</td>\n",
       "      <td>-341.190505</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>windspeed</td>\n",
       "      <td>-1174.845790</td>\n",
       "      <td>-1087.773198</td>\n",
       "      <td>-0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>mnth_2</td>\n",
       "      <td>-1207.111892</td>\n",
       "      <td>-143.125249</td>\n",
       "      <td>-0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>hum</td>\n",
       "      <td>-1298.592138</td>\n",
       "      <td>-1142.397276</td>\n",
       "      <td>-0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>weathersit_3</td>\n",
       "      <td>-1323.999988</td>\n",
       "      <td>-1303.708307</td>\n",
       "      <td>-0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>mnth_1</td>\n",
       "      <td>-1486.521042</td>\n",
       "      <td>-194.714350</td>\n",
       "      <td>-0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         columns      coef_lr   coef_ridge  coef_lasso\n",
       "33            yr  4550.708897  1504.623924    0.000000\n",
       "27          temp  2654.792827  1778.493414    0.000000\n",
       "13        mnth_9  1287.992360   678.352931    0.000000\n",
       "28         atemp   995.293778  1546.374034    0.000000\n",
       "14       mnth_10   929.887649    84.873020    0.000000\n",
       "17  weathersit_1   914.410909   914.843092    0.000000\n",
       "4       season_4   830.579518   767.205317   -0.000000\n",
       "16       mnth_12   586.296405  -824.928596   -0.000000\n",
       "12        mnth_8   517.803038   205.686009    0.000000\n",
       "18  weathersit_2   409.589079   388.865215   -0.000000\n",
       "15       mnth_11   407.138803  -725.828529   -0.000000\n",
       "26     weekday_6   238.417312   227.515740   -0.000000\n",
       "32    workingday   216.956549   212.558710    0.000000\n",
       "10        mnth_6   189.797216   369.663154    0.000000\n",
       "2       season_2    85.141889   110.998614    0.000000\n",
       "25     weekday_5    77.516263    81.396550    0.000000\n",
       "23     weekday_3    66.464787    59.857933    0.000000\n",
       "24     weekday_4    43.650546    62.795850    0.000000\n",
       "9         mnth_5     5.009200   387.713628    0.000000\n",
       "0        instant    -6.919060     1.417157    5.456671\n",
       "22     weekday_2   -31.943212   -34.140080    0.000000\n",
       "3       season_3  -130.807162   -91.388275    0.000000\n",
       "20     weekday_0  -191.612446  -191.851510   -0.000000\n",
       "21     weekday_1  -202.493250  -205.574484   -0.000000\n",
       "11        mnth_7  -203.137582  -242.548582    0.000000\n",
       "31       holiday  -263.761415  -248.222941   -0.000000\n",
       "8         mnth_4  -485.714239   106.306513    0.000000\n",
       "7         mnth_3  -541.439917   298.550050    0.000000\n",
       "1       season_1  -784.914245  -786.815656 -341.190505\n",
       "30     windspeed -1174.845790 -1087.773198   -0.000000\n",
       "6         mnth_2 -1207.111892  -143.125249   -0.000000\n",
       "29           hum -1298.592138 -1142.397276   -0.000000\n",
       "19  weathersit_3 -1323.999988 -1303.708307   -0.000000\n",
       "5         mnth_1 -1486.521042  -194.714350   -0.000000"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mses = np.mean(lasso.mse_path_, axis = 1)\n",
    "plt.plot(np.log10(lasso.alphas_), mses) \n",
    "plt.xlabel('log(alpha)')\n",
    "plt.ylabel('mse')\n",
    "plt.show()    \n",
    "            \n",
    "print ('alpha is:', lasso.alpha_)\n",
    "\n",
    "# 看看各特征的权重系数，系数的绝对值大小可视为该特征的重要性\n",
    "fs = pd.DataFrame({\"columns\":list(columns), \"coef_lr\":list((lr.coef_.T)), \"coef_ridge\":list((ridge.coef_.T)), \"coef_lasso\":list((lasso.coef_.T))})\n",
    "fs.sort_values(by=['coef_lr'],ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
